import sys
import matplotlib.pyplot as plt
import csv
#定义一个计算男女BMR的函数，由于男女BMR的计算公式仅有一个常数不同，所以将这个常数作为函数的变量b，以节约代码量。

print("欢迎使用BMR计算器")
print("输入y启动程序")
print("输入n关闭程序")
def main(b):
    while True:
        try:
            weigh = float(input("请输入您的体重(kg)："))
            height = float(input("请输入您的身高(cm)："))
            age = float(input("请输入您的年龄(岁)："))
            bmr = 10 * weigh + 6.25 * height - 5 * age + b
            print("您的基础代谢率(kJ/m^2*h)为：", bmr)
            user_input_1 = input("输入任意键返回计算BMR，输入1关闭程序：")
            if user_input_1 == "1" :
                print("程序已退出")
                sys.exit()
                with open('data.csv', 'w', newline='') as csvfile:
                    writer = csv.writer(csvfile)
                    for row in data:
                        writer.writerow(row)


        except ValueError:
            print("系统发生错误，请重新尝试。")

        with open('data.csv') as csvfile:
            reader = csv.reader(csvfile)
            data = list(reader)

        # 提取x轴和y轴数据
        x = [float(row[0]) for row in data]
        y = [float(row[3]) for row in data]

        # 绘制折线图
        plt.plot(x, y)

        # 设置图表标题和轴标签
        plt.title('Example Graph')
        plt.xlabel('Weight (kg)')
        plt.ylabel('BMR (kJ/m^2*h)')

        # 显示网格线
        plt.grid(True)

        # 显示图表
        plt.show()



#定义一个选择性别的函数
def on():
    while True:
        gender = input("请输入您的性别：")
        if gender == "男":
            print("您目前计算的是男性的基础代谢率。")
            main(5)



        elif gender == "女":
            print("您目前计算的是女性的基础代谢率。")
            main(-161)


        else:
            print("系统发生错误，请重新输入。")


#计算器的主程序
while True:
    user_input = input("请输入y/n:")
    if user_input == "y":
        print("程序启动")
        on()
        break

    elif user_input == "n":
        print("程序已退出")
        sys.exit()

    else:
        print("指令无效，请重新输入。")

